package top.codedance.iotp.common.enums;

public enum HttpStatus {
    CONTINUE(100),                              //这是对HTTP LBYL（look-before-you-leap）请求的一个可能的响应。
    SWITCHING_PROTOCOLS(101),                   //当客户端通过在请求里使用Upgrade报头，以通知服务器它想改用除HTTP协议之外的其他协议时，客户端将获得此响应代码。
    OK(200),                                    //一般来说，这是客户端希望看到的响应代码。它表示服务器成功执行了客户端所请求的动作，并且在2XX系列里没有其他更适合的响应代码了。
    CREATED(201),                               //当服务器依照客户端的请求创建了一个新资源时，发送此响应代码。
    ACCEPTED(202),                              //客户端的请求无法或将不被实时处理。请求稍后会被处理。请求看上去是合法的，但在实际处理它时有出现问题的可能。
    NON_AUTHORITATIVE_INFORMATION(203),         //这个响应代码跟200一样，只不过服务器想让客户端知道，有些响应报头并非来自该服务器--他们可能是从客户端先前发送的一个请求里复制的，或者从第三方得到的。
    NO_CONTENT(204),                            //若服务器拒绝对PUT、POST或者DELETE请求返回任何状态信息或表示，那么通常采用此响应代码。
    RESET_CONTENT(205),                         //它与204类似，但与204不同的是，它表明客户端应重置数据源的视图或数据结构。
    PARTIAL_CONTENT(206),                       //它跟200类似，但它用于对部分GET请求（即使用Range请求报头的GET请求）的响应。部分GET请求常用于大型二进制文件的断点续传。
    MULTIPLE_CHOICES(300),                      //若被请求的资源在服务器端存在多个表示，而服务器不知道客户端想要的是哪一个表示时，发送这个响应代码。
    MOVED_PERMANENTLY(301),                     //服务器知道客户端试图访问的是哪个资源，但它不喜欢客户端用当前URI来请求该资源。它希望客户端记住另一个URI，并在今后的请求中使用那个新的URI。你可以通过这个响应代码来防止由于URI变更而导致老URI失效。
    FOUND(302),                                 //这个响应代码市造成大多数重定向方面的混乱的最根本原因。它应该是像307那样被处理。
    SEE_OTHER(303),                             //请求已经被处理，但服务器不是直接返回一个响应文档，而是返回一个响应文档的URI。该响应文档可能是一个静态的状态信息，也可能是一个更有趣的资源
    NOT_MODIFLED(304),                          //这个响应代码跟204("No Content")类似：响应实体主体都必须为空。但204用于没有主体数据的情况，而304用于有主体数据，但客户端已拥有该数据，没必要重复发送的情况。
    USE_PROXY(305),                             //这个响应代码用于告诉客户端它需要再发一次请求，但这次要通过一个HTTP代理发送，而不是直接发送给服务器。
    TEMPORARY_REDIRECT(307),                    //请求还没有被处理，因为所请求的资源不在本地：它在另一个URI处。
    BAD_REQUEST(400),                           //这是一个通用的客户端错误状态，当其他4XX响应代码不适用时，就采用400。此响应代码通常用于“服务器收到客户端通过PUT或者POST请求提交的表示，表示的格式正确，但服务器不懂它什么意思”的情况。
    UNAUTHORIZED(401),                          //客户端试图对一个受保护的资源进行操作，却又没有提供正确的认证证书。客户端提供了错误的证书，或者根本没有提供证书。
    PAYMENT_REQUIRED(402),                      //除了它的名字外，HTTP标准没有对该响应的其他方面作任何定义。因为目前还没有用于HTTP的微支付系统，所以它被留作将来使用。
    FORBIDDEN(403),                             //客户端请求的结构正确，但是服务器不想处理它。这跟证书不正确的情况不同--若证书不正确，应该发送响应代码401。
    NOT_FOUND(404),                             //这也许是最广为人知的HTTP响应代码了。404表明服务器无法把客户端请求的URI转换为一个资源。相比之下，410更有用一些。
    METHOD_NOT_ALLOWD(405),                     //客户端试图使用一个本资源不支持的HTTP方法。例如：一个资源只支持GET方法，但是客户端使用PUT方法访问。
    NOT_ACCEPTABLE(406),                        //当客户端对表示有太多要求，以至于服务器无法提供满足要求的表示，服务器可以发送这个响应代码。例如：客户端通过Accept头指定媒体类型为application/json+hic，但是服务器只支持application/json。
    PROXY_AUTHENTICATION_REQUIRED(407),         //只有HTTP代理会发送这个响应代码。它跟401类似，唯一区别在于：这里不是无权访问web服务，而是无权访问代理。跟401一样，可能是因为客户端没有提供证书，也可能是客户端提供的证书不正确或不充分。
    REQEUST_TIMEOUT(408),                       //假如HTTP客户端与服务器建立链接后，却不发送任何请求（或从不发送表明请求结束的空白行），那么服务器最终应该发送一个408响应代码，并关闭此连接。
    CONFLICT(409),                              //此响应代码表明：你请求的操作会导致服务器的资源处于一种不可能或不一致的状态。例如你试图修改某个用户的用户名，而修改后的用户名与其他存在的用户名冲突了。
    GONE(410),                                  //这个响应代码跟404类似，但它提供的有用信息更多一些。这个响应代码用于服务器知道被请求的URI过去曾指向一个资源，但该资源现在不存在了的情况。
    LENGTH_REQUIRED(411),                       //若HTTP请求包含表示，它应该把Content-Length请求报头的值设为该表示的长度（以字节为单位）。对客户端而言，有时这不太方便（例如，当表示是来自其他来源的字节流时）。
    PRECONDITION_FAILED(412),                   //客户端在请求报头里指定一些前提条件，并要求服务器只有在满足一定条件的情况下才能处理本请求。若服务器不满足这些条件，就返回此响应代码。
    REQUEST_ENTITY_TOO_LARGE(413),              //这个响应代码跟411类似，服务器可以用它来中断客户端的请求并关闭连接，而不需要等待请求完成。
    REQUEST_URI_TOO_LONG(414),                  //HTTP标准并没有对URI长度作出官方限制，但大部分现有的web服务器都对URI长度有一个上限，而web服务可能也一样。
    UNSUPPORTED_MEDIA_TYPE(415),                //当客户端在发送表示时采用了一种服务器无法理解的媒体类型，服务器发送此响应代码。比如说，服务器期望的是XML格式，而客户端发送的确实JSON格式。
    REQUESTD_RANGE_NOT_SATISFIABLE(416),        //当客户端所请求的字节范围超出表示的实际大小时，服务器发送此响应代码。例如：你请求一个表示的1-100字节，但该表示总共只用99字节大小。
    EXPECTATION_FAILED(417),                    //此响应代码跟100正好相反。当你用LBYL请求来考察服务器是否会接受你的表示时，如果服务器确认会接受你的表示，那么你将获得响应代码100，否则你将获得417。
    INTERNAL_SERVER_ERROR(500),                 //这是一个通用的服务器错误响应。对于大多数web框架，如果在执行请求处理代码时遇到了异常，它们就发送此响应代码。
    NOT_IMPLEMENTED(501),                       //客户端试图使用一个服务器不支持的HTTP特性。
    BAD_GATEWAY(502),                           //只有HTTP代理会发送这个响应代码。它表明代理方面出现问题，或者代理与上行服务器之间出现问题，而不是上行服务器本身有问题。若代理根本无法访问上行服务器，响应代码将是504。
    SERVICE_UNAVAILABLE(503),                   //此响应代码表明HTTP服务器正常，只是下层web服务服务不能正常工作。最可能的原因是资源不足：服务器突然收到太多请求，以至于无法全部处理。
    GATEWAY_TIMEOUT(504),                       //跟502类似，只有HTTP代理会发送此响应代码。此响应代码表明代理无法连接上行服务器。
    HTTP_VERSION_NOT_SUPPORTED(505),            //当服务器不支持客户端试图使用的HTTP版本时发送此响应代码。
    ;
    private int code;

    HttpStatus(int code) {
        this.code = code;
    }

    public int getCode() {
        return this.code;
    }
}
